This invention relates generally to the field of data communications. More particularly, a method and apparatus are provided for transporting data from a data server.
A data server (e.g., a database, an origin server) is configured to serve data to clients and other servers. For example, a data server may receive a query from a client (e.g., a SELECT statement), retrieve data that satisfy the query from disk or other storage, and serve the data to the client. The data may comprise any number of rows, or records, and each row may contain any number of columns, or attributes.
Traditionally, such data (e.g., a row set, a result set) is shipped from the data server one row at a time. However, before transmission, each row or column is usually decomposed into its constituent columns, which may be processed to convert data types, apply business logic, retrieve related data, format a column's data, etc. For wide rows (e.g., rows having tens or hundreds of columns), a significant amount of time may be expended performing the processing on the server prior to its transmission. And, in some cases, the client may be configured or configurable to perform the same processing.
At the client or other recipient, data are received one row at a time, and may be broken down into individual columns and consumed as needed for the controlling application or utility. The data may thus be disassembled twice—once at the server and once at the client—before being consumed. For simple data (e.g., those requiring little or no processing on the data server), two disassembly operations may be superfluous.